/**
 * "LeagueDateUtils.java is for what: "
 * <p>
 * Create by Ray at 2016年6月29日 下午4:25:40.
 * Ray [email:rayinhangzhou@126.com]
 * <p>
 * ┏┛ ┻━━━━━┛ ┻┓
 * ┃　　　　　　 ┃
 * ┃　　　━　　　┃
 * ┃　┳┛　  ┗┳　┃
 * ┃　　　　　　 ┃
 * ┃　　　┻　　　┃
 * ┃　　　　　　 ┃
 * ┗━┓　　　┏━━━┛
 * ┃　　　┃   神兽保佑
 * ┃　　　┃   代码无BUG！
 * ┃　　　┗━━━━━━━━━┓
 * ┃　　　　　　　    ┣┓
 * ┃　　　　         ┏┛
 * ┗━┓ ┓ ┏━━━┳ ┓ ┏━┛
 * ┃ ┫ ┫   ┃ ┫ ┫
 * ┗━┻━┛   ┗━┻━┛
 * Revision History
 * <p>
 * Date            Programmer                   Notes
 * ---------    ---------------------  -----------------------------------
 * 2016年6月29日            Ray                       initial
 **/
package com.rayinhz.bet;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;

import javax.servlet.http.HttpServletRequest;
import java.util.Calendar;
import java.util.Date;
import java.util.UUID;

@Slf4j
public class CommonUtils {

    public static String formatDateBetween(Date date) {
        long between = System.currentTimeMillis() - date.getTime();
        int hour = (int) (between / 60 / 60 / 1000);
        if (hour == 0) {
            return "刚刚";
        }
        if (hour < 24) {
            return hour + "小时前";
        }
        int dayCur = Calendar.getInstance().get(Calendar.DAY_OF_YEAR);
        Calendar _temp = Calendar.getInstance();
        _temp.setTime(date);
        int day = dayCur - _temp.get(Calendar.DAY_OF_YEAR);
        if (day == 1) {
            return "昨天";
        } else if (day < 0) {
            return (day + 365) + "天前";
        } else {
            return day + "天前";
        }
    }

    public static Date parseDate(String date, String patten) {
        try {
            return DateUtils.parseDate(date, patten);
        } catch (Exception e) {
            log.error("{},{}", date, patten, e);
            return null;
        }
    }

    public static String getIp(HttpServletRequest request) {
        String remoteIp = request.getHeader("X-Forwarded-For");
        if (StringUtils.isBlank(remoteIp)) {
            remoteIp = request.getHeader("X-Real-IP");
        }
        if (StringUtils.isBlank(remoteIp)) {
            remoteIp = request.getRemoteAddr();
        }
        if (remoteIp.contains("0:0:0:0:0:0")) {
            remoteIp = "localhost";
        }
        return remoteIp;
    }

    /**
     * 生成8位短 uuid
     * @return
     */
    public static String getShortUuid() {
        String[] chars = new String[]{"a", "b", "c", "d", "e", "f",
                "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
                "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
                "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I",
                "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
                "W", "X", "Y", "Z"};
        StringBuffer shortBuffer = new StringBuffer();
        String uuid = UUID.randomUUID().toString().replace("-", "");
        for (int i = 0; i < 8; i++) {
            String str = uuid.substring(i * 4, i * 4 + 4);
            int x = Integer.parseInt(str, 16);
            shortBuffer.append(chars[x % 0x3E]);
        }
        return shortBuffer.toString();

    }
}
